/*
 * Copyright (c) 2006 Zsolt Szasz <zsolt at lorecraft dot com>
 * 
 * Permission is hereby granted, free of charge, to any person obtaining
 * a copy of this software and associated documentation files (the
 * "Software"), to deal in the Software without restriction, including
 * without limitation the rights to use, copy, modify, merge, publish,
 * distribute, sublicense, and/or sell copies of the Software, and to
 * permit persons to whom the Software is furnished to do so, subject to
 * the following conditions:
 * 
 * The above copyright notice and this permission notice shall be
 * included in all copies or substantial portions of the Software.
 * 
 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
 * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
 * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
 * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
 * LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
 * OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
 * WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 */

package org.lorecraft.routes;

import java.util.HashMap;
import java.util.Map;

public class RouteMapping {

	private boolean valid = true;
	private Map<String, String[]> params = new HashMap<String, String[]>();
	private final String namespace;

	public RouteMapping(String namespace) {
		this.namespace = namespace;
	}

	public String getAction() {
		String[] actions = params.get("action");
		String action = actions == null ? null : actions[0];
		if (action == null) {
			return "index";
		}
		return action;
	}

	public void markInvalid() {
		this.valid = false;		
	}

	protected boolean isValid() {
		return valid;
	}

	public Map<String, String[]> getParams() {
		return params;
	}

	public void setParameter(String name, String value) {
		String[] values = params.get(name);
		String[] newValues = null;
		if (values != null) {
			newValues = new String[values.length + 1];
			for (int i = 0; i < values.length; i++) {
				newValues[i] = values[i];
			}
			newValues[values.length] = value;
		} else {
			newValues = new String[] { value };
		}
		params.put(name, newValues);
	}
	
	public String getNamespace() {
		return namespace;
	}

}
